﻿Public Class HerramientasEnStockDal
    Dim db As dataBaseDataContext

    Sub New()
        Try
            db = New dataBaseDataContext(sqlConfiguracion.GetConnectionString)
        Catch ex As Exception

        End Try
    End Sub
    Sub nueva(tipoHerramienta As String, cantidad As Integer)
        '            Dim q = (From x In db.Stock Where x.TipoHerramienta = tipoDeHerramienta).FirstOrDefault
        '           If IsNothing(q) Then
        'End If
        Try
            Dim s As New HerramientasEnStock
            s.CantidadTotal = cantidad
            s.TipoHerramienta = tipoHerramienta
            s.CanTidadDisponible = cantidad
            s.CantidadTotal = cantidad
            s.CantidadPrestadas = 0
            db.HerramientasEnStock.InsertOnSubmit(s)
            db.SubmitChanges()
        Catch
            '  Throw New Exception("Ya existe esta herramienta, debe usar otro identificador o usar el comando para sumar cantidades de herramientas existentes")
        End Try
    End Sub
    Function Disponibles(tipoHerramienta As String) As Integer
        Dim q = (From x In db.HerramientasEnStock Where x.TipoHerramienta = tipoHerramienta).FirstOrDefault
        Return q.CanTidadDisponible
    End Function
    Private Sub Enviar(x As Integer, tipoHerramienta As String, obraDestino As Obra, cantidadEnviada As Integer, fechaEnvio As Date, obs As String)
        Dim qHerramienta = (From c In db.HerramientasEnStock Where c.TipoHerramienta = tipoHerramienta Select c).FirstOrDefault
        If qHerramienta IsNot Nothing AndAlso qHerramienta.CanTidadDisponible >= cantidadEnviada Then
            qHerramienta.CantidadPrestadas += cantidadEnviada
            qHerramienta.CanTidadDisponible -= cantidadEnviada
            Dim envio As New envioDAL()
            envio.nuevoEnvio(obraDestino, qHerramienta, cantidadEnviada, fechaEnvio, obs)
        End If
    End Sub
    Function Enviar(envio As Envio) As Boolean
        Dim b As Boolean = False
        Try
            Dim qHerramienta = (From c In db.HerramientasEnStock Where c.TipoHerramienta = envio.TipoHerramienta Select c).FirstOrDefault
            If qHerramienta IsNot Nothing AndAlso qHerramienta.CanTidadDisponible >= envio.Cantidad Then
                qHerramienta.CantidadPrestadas += envio.Cantidad
                qHerramienta.CanTidadDisponible -= envio.Cantidad
                db.SubmitChanges()
                b = True
            End If
        Catch

        End Try
        Return b
    End Function
    Function recuperar(nombreHerramienta As String) As HerramientasEnStock
        Try
            Dim h = (From he In db.HerramientasEnStock Where he.TipoHerramienta = nombreHerramienta Select he).FirstOrDefault
            Return h
        Catch ex As Exception

        End Try
    End Function
End Class
